import request from '@/api/request'
import { IModuleType } from '#/common'

/**
 * 模型管理相关接口
 */

/**
 * 创建模型
 * @param data 模型数据
 * @returns 创建结果
 */
export const createModule = (data: IModuleType) => {
  return request.post('/webbase', data)
}

/**
 * 分页查询模型列表
 * @param params 查询参数
 * @returns 分页数据
 */
export const getModuleList = (params: {
  moduleName?: string
  moduleType?: 'list' | 'detail'
  status?: number
  pageNum?: number
  pageSize?: number
}) => {
  return request.post('/webbase/findAll', params)
}

export const getAllModules = () => {
  return request.get('/webbase/all')
}

/**
 * 根据ID查询模型详情
 * @param id 模型ID
 * @returns 模型详情
 */
export const getModuleById = (id: string) => {
  return request.get(`/webbase/findModuleById/${id}`)
}

/**
 * 更新模型
 * @param id 模型ID
 * @param data 更新数据
 * @returns 更新结果
 */
export const updateModule = (id: string, data: Partial<IModuleType>) => {
  return request.post(`/webbase/updateModule/${id}`, data)
}

/**
 * 删除模型
 * @param id 模型ID
 * @returns 删除结果
 */
export const deleteModule = (id: string) => {
  return request.delete(`/webbase/delete/${id}`)
}

/**
 * 批量删除模型
 * @param ids 模型ID数组
 * @returns 删除结果
 */
export const batchDeleteModules = (ids: string[]) => {
  return request.post('/webbase/batchDelete', { ids })
}

/**
 * 立方体组件相关接口
 */

/**
 * 创建立方体组件
 * @param data 立方体组件数据
 * @returns 创建结果
 */
export const createCube = (data: any) => {
  return request.post('/webbase/cube', data)
}

/**
 * 分页查询立方体组件列表
 * @param params 查询参数
 * @returns 分页数据
 */
export const getCubeList = (params: {
  cubeName?: string
  type?: string
  templateId?: string
  pageNum?: number
  pageSize?: number
}) => {
  return request.post('/webbase/cube/findAll', params)
}

/**
 * 获取全部立方体组件列表（不带分页）
 * @returns 全部立方体组件列表
 */
export const getAllCubes = () => {
  return request.get('/webbase/cube/all')
}

/**
 * 根据ID查询立方体组件详情
 * @param id 立方体组件ID
 * @returns 立方体组件详情
 */
export const getCubeById = (id: string) => {
  return request.get(`/webbase/cube/findCubeById/${id}`)
}

/**
 * 更新立方体组件
 * @param id 立方体组件ID
 * @param data 更新数据
 * @returns 更新结果
 */
export const updateCube = (id: string, data: any) => {
  return request.post(`/webbase/cube/update/${id}`, data)
}

/**
 * 删除立方体组件
 * @param id 立方体组件ID
 * @returns 删除结果
 */
export const deleteCube = (id: string) => {
  return request.delete(`/webbase/cube/delete/${id}`)
}

/**
 * 批量删除立方体组件
 * @param ids 立方体组件ID数组
 * @returns 删除结果
 */
export const batchDeleteCubes = (ids: string[]) => {
  return request.post('/webbase/cube/batchDelete', { ids })
}

export const getDefaultModuleTemplate = () => {
  return request.get('/webbase/template/default-module')
}

/**
 * 模板管理相关接口
 */

/**
 * 创建模板
 * @param data 模板数据
 * @returns 创建结果
 */
export const createTemplate = (data: {
  templateName: string
  bindFileName: string
  bindComponentString: string
  moduleList?: string[]
  templateContentCache?: string
  type?: string
}): Promise<any> => {
  return request.post('/webbase/templates', data)
}

/**
 * 分页查询模板列表
 * @param params 查询参数
 * @returns 分页数据
 */
export const getTemplateList = (params: {
  templateName?: string
  type?: string
  pageNum?: number
  pageSize?: number
}) => {
  return request.get('/webbase/templates', { params })
}

/**
 * 获取全部模板列表（不带分页）
 * @param params 查询参数
 * @returns 全部模板列表
 * type: page list detail
 */
export const getAllTemplates = (params?: {
  templateName?: string
  type?: string
}) => {
  return request.get('/webbase/templates/all', { params })
}

/**
 * 根据ID查询模板详情
 * @param id 模板ID
 * @returns 模板详情
 */
export const getTemplateById = (id: string) => {
  return request.get(`/webbase/templates/getDetail/${id}`)
}

/**
 * 更新模板
 * @param id 模板ID
 * @param data 更新数据
 * @returns 更新结果
 */
export const updateTemplate = (id: string, data: {
  templateName?: string
  bindFileName?: string
  bindComponentString?: string
  moduleList?: string[]
  templateContentCache?: string
  type?: string
}) => {
  return request.put(`/webbase/templates/update/${id}`, data)
}

/**
 * 删除模板
 * @param id 模板ID
 * @returns 删除结果
 */
export const deleteTemplate = (id: string) => {
  return request.delete(`/webbase/templates/delete/${id}`)
}

/**
 * 批量删除模板
 * @param ids 模板ID数组
 * @returns 删除结果
 */
export const batchDeleteTemplates = (ids: string[]) => {
  return request.delete('/webbase/templates/batchDelete', { data: { ids } })
}

export const updatePreview = (data: {
  content: string
}): Promise<any> => {
  return request.post('/webbase/updatePreview', data)
}

/**
 * 创建轮播图
 * @returns
 */
export const createCarousel = (body: any) => {
  return request.post('/carousel', body)
}

/**
 * 分页查询轮播图列表
 * @param params
 * @returns
 */
export const getCarouselList = (params: {
  pageNum?: number
  pageSize?: number
  group?: string
}) => {
  return request.get('/carousel', { params })
}

export const getCarouselById = (id: string) => {
  return request.get(`/carousel/${id}`)
}

/**
 * 更新轮播图
 * @param id
 * @param body
 * @returns
 */
export const updateCarousel = (id: string, body: any) => {
  return request.patch(`/carousel/${id}`, body)
}

export const deleteCarousel = (id: string) => {
  return request.delete(`/carousel/${id}`)
}

export const batchDeleteCarousel = (ids: string[]) => {
  return request.delete('/carousel/batchDelete', { data: { ids } })
}
